<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // 箭头函数：
      // 1.什么样的函数可以改成箭头函数；赋值式的函数可以改；
      // ES5
      // 赋值式 、匿名函数
      // let fn = function(){
      //     console.log("fn")
      // }
      // fn();
      // 声明式  命名式
      // function fn(){
      //     console.log("fn");
      // }
      // fn();

      // 2.如何改箭头函数
      // 没有返还值的函数
      // ES5
      // let fn = function(){
      //     console.log("fn");
      // }
      // ES6

      // 参数问题 ；
      // ES5
      // let fn = function(a){
      //     console.log("fn",a);
      // }
      // ES6箭头语法 ：如果是一个参数可以省略小括号
      //   let fn = (a) => {
      //     console.log("fn", a);
      //   };
      //   fn(1);

      // 多个参数不能省略小括号
      // let fn = (a,b)=>{
      //     console.log("fn",a,b);
      // }

      // fn(1,2);

      // 改写有返还值的函数；
      // ES5
      //   let fn = function (a) {
      //     return a;
      //   };
      // es6: 箭头函数 没有大括号的时候 隐式带return；
      //   let fn = (a) => {
      //     return a;
      //   };
      //   console.log(fn(2));

      // ES5
      // let fn = function(age){
      //     return {name:"张三",age};
      // }

      // console.log(fn(21));
      // ES6;有歧义 ；
      //   let fn = (age) => ({ name: "张三", age });
      //   let fn = (age) => {
      //     return { name: "张三", age };
      //   };
      //   console.log(fn(21));
      // 各种回调改写箭头函数
      //   var arr = ["张三", "李四", "王五"];
      //   //   var newarr = arr.map(function (item) {
      //   //     return item;
      //   //   });
      //   //   console.log(newarr);

      //   var newarr = arr.map((item) => item);
      //   console.log(newarr);
      //运用
      var arr = [
        {
          name: "张三",
          age: 20,
          gender: "男",
          ischeck: false,
        },
        {
          name: "李四",
          age: 27,
          gender: "男",
          ischeck: true,
        },
        {
          name: "王五",
          age: 23,
          gender: "女",
          ischeck: false,
        },
        {
          name: "王六",
          age: 29,
          gender: "男",
          ischeck: true,
        },
      ];
      // 1.获取所有的年龄在20以上的人员 2.获取所有的男性 3.判断是否全部ischeck为true
      // var arr2 = arr.filter(function (item) {
      //     return item.age > 20
      // })
      // var arr3 = arr2.filter(function (item) {
      //     return item.gender == "男";
      // })
      // var res = arr3.every(function (item) {
      //     return item.ischeck;
      // })
      // console.log(res);

      // ES6
      var res = arr
        .filter((item) => item.age > 20)
        .filter((item) => item.gender == "男")
        .every((item) => item.ischeck);
      console.log(res);
    </script>
  </body>
</html>
